/* @file acl_ge_stub.h
 *
 * Copyright (c) Huawei Technologies Co., Ltd. 2023. All Rights reserved.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 */
#ifndef UT_TESTCASE_C_ACL_GE_STUB_H_
#define UT_TESTCASE_C_ACL_GE_STUB_H_

#include <gmock/gmock.h>
#include "framework/executor_c/ge_executor.h"

class AclStub {
 public:
  // ge function
  virtual Status GetModelDescInfo(uint32_t modelId, ModelInOutInfo *info);
  virtual Status GetModelDescInfoFromMem(const ModelData *modelData,
                                         ModelInOutInfo *info);
  virtual Status LoadDataFromFile(const char *modelPath, ModelData *data);
  virtual void FreeModelData(ModelData *data);
  virtual void DestoryModelInOutInfo(ModelInOutInfo *info);
};

class MockFunctionTest {
 public:
  MockFunctionTest(){};
  static MockFunctionTest &aclStubInstance();

  // ge function stub
  MOCK_METHOD2(GetModelDescInfo,
               Status(uint32_t modelId, ModelInOutInfo *info));
  MOCK_METHOD2(GetModelDescInfoFromMem,
               Status(const ModelData *modelData, ModelInOutInfo *info));
  MOCK_METHOD1(DestoryModelInOutInfo, void(ModelInOutInfo *info));
  MOCK_METHOD2(LoadDataFromFile,
               Status(const char *modelPath, ModelData *data));
  MOCK_METHOD1(FreeModelData, void(ModelData *data));
};

#endif